/*
 * @Author: your name
 * @Date: 2021-09-02 19:17:02
 * @LastEditTime: 2021-09-03 13:05:52
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \briup\3-云服务器\es5\day09\9.02的算法练习.js
 */
//求数组的和
var s = 0;

function sum(arr) {
    for (var i = 0; i < arr.length; i++) {
        var v = arr[i];
        s = s + v;
    }
    console.log(s);
}
var arr = [1, 2, 3, 4];
var result = sum(arr);



//如果第二个参数 bUnicode255For1 === true，则所有字符长度为 1
//否则如果字符 Unicode 编码 > 255 则长度为 2
function strLength(s, bUnicode255For1) {
    if (bUnicode255For1) {
        return s.length;
    } else {
        var l = s.length;
        for (var i = 0; i < s.length; i++) {
            if (s.charCodeAt(i) > 255) {
                l++;
            }
        }
        return l;
    }
}
var n = "'hello world, 牛客', false";
console.log(strLength(n));



//封装函数实现indexOf查找功能，找得到返回下标，找不到返回-1
function indexOf(arr, item) {
    for (var key in arr) {
        if (item == arr[key]) {
            return key;
        }
    }
    return -1;
}
var arr = [1, 2, 3, 4];
console.log(indexOf(arr, 3));



//在数组 arr 开头添加元素 item。不要直接修改数组 arr，结果返回新的数组
function prepend(arr, item) {
    var newArr = [];
    newArr[0] = item;
    for (var key in arr) {
        newArr[key + 1] = arr[key];
    }
    return newArr;
}
var a = [1, 2, 3, 4];
console.log(prepend(a, 10));



//在数组 arr 中，查找值与 item 相等的元素出现的所有位置
function findAllOccurrences(arr, target) {
    var newArr = [];
    for (var key in arr) {
        if (target === arr[key]) {
            newArr.push(key);
        }
    }
    return newArr;
}
var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'a', 'b', 'c'];
console.log(findAllOccurrences(arr, 'a'));



//函数 useArguments 可以接收 1 个及以上的参数。请实现函数 useArguments，返回所有调用参数相加后的结果。本题的测试参数全部为 Number 类型，不需考虑参数转换。
function useArguments() {
    var s = 0;
    for (var i = 0; i < arguments.length; i++) {
        s = s + arguments[i];
    }
    return s;
}
console.log(useArguments(1, 2, 3, 4));


//为数组 arr 中的每个元素求二次方。不要直接修改数组 arr，结果返回新的数组
function square(arr) {
    var newArr = [];
    for (var key in arr) {
        newArr[key] = arr[key] * arr[key];
    }
    return newArr;
}